
        static std::vector<a8::XValue> CreateXValueArray()
        {
          std::vector<a8::XValue> result;
          return result;
        }
        
        template<typename _T0_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13,
const _T14_& t14)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));
result.push_back(a8::XValue(t14));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13,
const _T14_& t14,
const _T15_& t15)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));
result.push_back(a8::XValue(t14));
result.push_back(a8::XValue(t15));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13,
const _T14_& t14,
const _T15_& t15,
const _T16_& t16)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));
result.push_back(a8::XValue(t14));
result.push_back(a8::XValue(t15));
result.push_back(a8::XValue(t16));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_,
typename _T17_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13,
const _T14_& t14,
const _T15_& t15,
const _T16_& t16,
const _T17_& t17)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));
result.push_back(a8::XValue(t14));
result.push_back(a8::XValue(t15));
result.push_back(a8::XValue(t16));
result.push_back(a8::XValue(t17));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_,
typename _T17_,
typename _T18_>
static std::vector<a8::XValue> CreateXValueArray(const _T0_& t0,
const _T1_& t1,
const _T2_& t2,
const _T3_& t3,
const _T4_& t4,
const _T5_& t5,
const _T6_& t6,
const _T7_& t7,
const _T8_& t8,
const _T9_& t9,
const _T10_& t10,
const _T11_& t11,
const _T12_& t12,
const _T13_& t13,
const _T14_& t14,
const _T15_& t15,
const _T16_& t16,
const _T17_& t17,
const _T18_& t18)
{
std::vector<a8::XValue> result;
result.push_back(a8::XValue(t0));
result.push_back(a8::XValue(t1));
result.push_back(a8::XValue(t2));
result.push_back(a8::XValue(t3));
result.push_back(a8::XValue(t4));
result.push_back(a8::XValue(t5));
result.push_back(a8::XValue(t6));
result.push_back(a8::XValue(t7));
result.push_back(a8::XValue(t8));
result.push_back(a8::XValue(t9));
result.push_back(a8::XValue(t10));
result.push_back(a8::XValue(t11));
result.push_back(a8::XValue(t12));
result.push_back(a8::XValue(t13));
result.push_back(a8::XValue(t14));
result.push_back(a8::XValue(t15));
result.push_back(a8::XValue(t16));
result.push_back(a8::XValue(t17));
result.push_back(a8::XValue(t18));          
          return result;
        }
        
        
        static std::vector<std::pair<std::string, a8::XValue> > CreateXValuePairs()
        {
          std::vector<std::pair<std::string, a8::XValue> > result;
          return result;
        }
        
        template<typename _T0_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13,
const char* s14, const _T14_& t14)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));
result.push_back(std::make_pair(s14, a8::XValue(t14)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13,
const char* s14, const _T14_& t14,
const char* s15, const _T15_& t15)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));
result.push_back(std::make_pair(s14, a8::XValue(t14)));
result.push_back(std::make_pair(s15, a8::XValue(t15)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13,
const char* s14, const _T14_& t14,
const char* s15, const _T15_& t15,
const char* s16, const _T16_& t16)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));
result.push_back(std::make_pair(s14, a8::XValue(t14)));
result.push_back(std::make_pair(s15, a8::XValue(t15)));
result.push_back(std::make_pair(s16, a8::XValue(t16)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_,
typename _T17_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13,
const char* s14, const _T14_& t14,
const char* s15, const _T15_& t15,
const char* s16, const _T16_& t16,
const char* s17, const _T17_& t17)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));
result.push_back(std::make_pair(s14, a8::XValue(t14)));
result.push_back(std::make_pair(s15, a8::XValue(t15)));
result.push_back(std::make_pair(s16, a8::XValue(t16)));
result.push_back(std::make_pair(s17, a8::XValue(t17)));          
          return result;
        }
        
        template<typename _T0_,
typename _T1_,
typename _T2_,
typename _T3_,
typename _T4_,
typename _T5_,
typename _T6_,
typename _T7_,
typename _T8_,
typename _T9_,
typename _T10_,
typename _T11_,
typename _T12_,
typename _T13_,
typename _T14_,
typename _T15_,
typename _T16_,
typename _T17_,
typename _T18_>
static std::vector<a8::XValue> CreateXValuePairs(const char* s0, const _T0_& t0,
const char* s1, const _T1_& t1,
const char* s2, const _T2_& t2,
const char* s3, const _T3_& t3,
const char* s4, const _T4_& t4,
const char* s5, const _T5_& t5,
const char* s6, const _T6_& t6,
const char* s7, const _T7_& t7,
const char* s8, const _T8_& t8,
const char* s9, const _T9_& t9,
const char* s10, const _T10_& t10,
const char* s11, const _T11_& t11,
const char* s12, const _T12_& t12,
const char* s13, const _T13_& t13,
const char* s14, const _T14_& t14,
const char* s15, const _T15_& t15,
const char* s16, const _T16_& t16,
const char* s17, const _T17_& t17,
const char* s18, const _T18_& t18)
{
std::vector<std::pair<std::string, a8::XValue> > result;
result.push_back(std::make_pair(s0, a8::XValue(t0)));
result.push_back(std::make_pair(s1, a8::XValue(t1)));
result.push_back(std::make_pair(s2, a8::XValue(t2)));
result.push_back(std::make_pair(s3, a8::XValue(t3)));
result.push_back(std::make_pair(s4, a8::XValue(t4)));
result.push_back(std::make_pair(s5, a8::XValue(t5)));
result.push_back(std::make_pair(s6, a8::XValue(t6)));
result.push_back(std::make_pair(s7, a8::XValue(t7)));
result.push_back(std::make_pair(s8, a8::XValue(t8)));
result.push_back(std::make_pair(s9, a8::XValue(t9)));
result.push_back(std::make_pair(s10, a8::XValue(t10)));
result.push_back(std::make_pair(s11, a8::XValue(t11)));
result.push_back(std::make_pair(s12, a8::XValue(t12)));
result.push_back(std::make_pair(s13, a8::XValue(t13)));
result.push_back(std::make_pair(s14, a8::XValue(t14)));
result.push_back(std::make_pair(s15, a8::XValue(t15)));
result.push_back(std::make_pair(s16, a8::XValue(t16)));
result.push_back(std::make_pair(s17, a8::XValue(t17)));
result.push_back(std::make_pair(s18, a8::XValue(t18)));          
          return result;
        }
        
        